package com.mylibraryapplication.activity;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.graphics.Palette;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.support.v7.widget.Toolbar;

import com.mylibrary.view.tabIndicator.Indicator;
import com.mylibrary.view.tabIndicator.IndicatorViewPager;
import com.mylibrary.view.tabIndicator.IndicatorViewPager.IndicatorPagerAdapter;
import com.mylibrary.view.tabIndicator.IndicatorViewPager.IndicatorViewPagerAdapter;
import com.mylibraryapplication.R;
import com.mylibraryapplication.base.BaseActivity;
import com.mylibraryapplication.view.TitleView;




public class GuideActivity extends BaseActivity {
    private IndicatorViewPager indicatorViewPager;
    private LayoutInflater inflate;
    private TitleView tvTitle;
    private Toolbar mToolbar;
    private Indicator indicator;
    private Window window;
    @Override
    public int getLayoutId() {
        return R.layout.activity_guide;
    }

    @Override
    public void initView() {
        window=getWindow();
        ViewPager viewPager = (ViewPager) findViewById(R.id.guide_viewPager);
        indicator = (Indicator) findViewById(R.id.guide_indicator);
        tvTitle= (TitleView) findViewById(R.id.title);
        setTitle(tvTitle,"引导页");
        indicatorViewPager = new IndicatorViewPager(indicator, viewPager);
        inflate = LayoutInflater.from(getApplicationContext());
        indicatorViewPager.setAdapter(adapter);
        indicatorViewPager.setOnIndicatorPageChangeListener(new IndicatorViewPager.OnIndicatorPageChangeListener() {
            @Override
            public void onIndicatorPageChange(int preItem, int currentItem) {
                colorChange(currentItem);
            }
        });


        initViews();
    }

    private int[] images = {R.mipmap.ic_guide_1, R.mipmap.ic_guide_2, R.mipmap.ic_guide_6, R.mipmap.ic_guide_5};
    private IndicatorPagerAdapter adapter = new IndicatorViewPagerAdapter() {

        @Override
        public View getViewForTab(int position, View convertView, ViewGroup container) {
            if (convertView == null) {
                convertView = inflate.inflate(R.layout.tab_guide, container, false);
            }
            return convertView;
        }

        @Override
        public View getViewForPage(int position, View convertView, ViewGroup container) {
            if (convertView == null) {
                convertView = new View(getApplicationContext());
                convertView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
            }
            convertView.setBackgroundResource(images[position]);

            return convertView;
        }

        @Override
        public int getItemPosition(Object object) {
            //这是ViewPager适配器的特点,有两个值 POSITION_NONE，POSITION_UNCHANGED，默认就是POSITION_UNCHANGED,
            // 表示数据没变化不用更新.notifyDataChange的时候重新调用getViewForPage
            return PagerAdapter.POSITION_NONE;
        }

        @Override
        public int getCount() {
            return images.length;
        }
    };


    //pallter
    private void initViews() {
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        // toolbar.setLogo(R.drawable.ic_launcher);
        mToolbar.setTitle("引导页");// 标题的文字需在setSupportActionBar之前，不然会无效
        mToolbar.setTitleTextColor(ContextCompat.getColor(mContext,R.color.white_color));
        // toolbar.setSubtitle("副标题");
        setSupportActionBar(mToolbar);
    /* 这些通过ActionBar来设置也是一样的，注意要在setSupportActionBar(toolbar);之后，不然就报错了 */
        // getSupportActionBar().setTitle("标题");
        // getSupportActionBar().setSubtitle("副标题");
        // getSupportActionBar().setLogo(R.drawable.ic_launcher);

    /* 菜单的监听可以在toolbar里设置，也可以像ActionBar那样，通过下面的两个回调方法来处理 */
//        mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
//            @Override
//            public boolean onMenuItemClick(MenuItem item) {
//                switch (item.getItemId()) {
//                    case R.id.action_settings:
//                        Toast.makeText(mContext, "action_settings", 0).show();
//                        break;
//                    case R.id.action_share:
//                        Toast.makeText(mContext, "action_share", 0).show();
//                        break;
//                    default:
//                        break;
//                }
//                return true;
//            }
//        });
//        getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    }

    private void colorTopChange(int color){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(color);   //这里动态修改颜色

            TypedValue typedValue = new TypedValue();
            getTheme().resolveAttribute(R.attr.colorPrimaryDark, typedValue, true);
            int statusHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics());

            Log.e(TAG,"高度==="+statusHeight);
            // 注意setStatusBarBackgroundColor方法需要你将fitsSystemWindows设置为true才会生效
//            DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.my_drawer_layout);
//            drawerLayout.setStatusBarBackgroundColor(color);

        }
    }
    /**
     * 界面颜色的更改
     */
    private void colorChange(int position) {
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),images[position]);
        Log.e(TAG,"抓取颜色值位置===="+position);
        // Palette的部分
        Palette palette = Palette.from(bitmap).generate();
        /**
         * Vibrant  （有活力）

         Vibrant dark（有活力 暗色）

         Vibrant light（有活力 亮色）

         Muted  （柔和）

         Muted dark（柔和 暗色）

         Muted light（柔和 亮色）
         */
        Palette.Swatch vibrantSwatch = palette.getLightVibrantSwatch();
        Palette.Swatch lightMutedSwatch = palette.getLightMutedSwatch();
        if(vibrantSwatch != null) {
            //get rgb
//            int rgb = lightMutedSwatch.getRgb();
            int rgb = vibrantSwatch.getRgb();
            //+vibrantSwatch.getRgb()
            Log.e(TAG,rgb+"===抓取颜色值====");
            tvTitle.setBackgroundColor(rgb);
            mToolbar.setBackgroundColor(rgb);
            colorTopChange(rgb);
        } else {
            Log.e(TAG,"未抓取颜色值====");
            mToolbar.setBackgroundColor(ContextCompat.getColor(mContext,R.color.app_main_color));
            tvTitle.setBackgroundColor(ContextCompat.getColor(mContext,R.color.app_main_color));
            //get another swatch
        }

//        Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
//            /**
//             * 提取完之后的回调方法
//             */
//            @Override
//            public void onGenerated(Palette palette) {
//                Palette.Swatch vibrant = palette.getVibrantSwatch();
//                /* 界面颜色UI统一性处理,看起来更Material一些 */
////                mPagerSlidingTabStrip.setBackgroundColor(vibrant.getRgb());
////                mPagerSlidingTabStrip.setTextColor(vibrant.getTitleTextColor());
////                // 其中状态栏、游标、底部导航栏的颜色需要加深一下，也可以不加，具体情况在代码之后说明
////                mPagerSlidingTabStrip.setIndicatorColor(colorBurn(vibrant.getRgb()));
//
//
////                mToolbar.setBackgroundColor(vibrant.getRgb());
////                tvTitle.setBackgroundColor(vibrant.getRgb());
//                Log.e(TAG,"抓取颜色值===="+vibrant.getRgb());
//                if (android.os.Build.VERSION.SDK_INT >= 21) {
//                    Window window = getWindow();
//                    // 很明显，这两货是新API才有的。
//                    window.setStatusBarColor(colorBurn(vibrant.getRgb()));
//                    window.setNavigationBarColor(colorBurn(vibrant.getRgb()));
//                }
//            }
//        });
    }

    /**
     * 颜色加深处理
     *
     * @param RGBValues
     *            RGB的值，由alpha（透明度）、red（红）、green（绿）、blue（蓝）构成，
     *            Android中我们一般使用它的16进制，
     *            例如："#FFAABBCC",最左边到最右每两个字母就是代表alpha（透明度）、
     *            red（红）、green（绿）、blue（蓝）。每种颜色值占一个字节(8位)，值域0~255
     *            所以下面使用移位的方法可以得到每种颜色的值，然后每种颜色值减小一下，在合成RGB颜色，颜色就会看起来深一些了
     * @return
     */
    private int colorBurn(int RGBValues) {
        int alpha = RGBValues >> 24;
        int red = RGBValues >> 16 & 0xFF;
        int green = RGBValues >> 8 & 0xFF;
        int blue = RGBValues & 0xFF;
        red = (int) Math.floor(red * (1 - 0.1));
        green = (int) Math.floor(green * (1 - 0.1));
        blue = (int) Math.floor(blue * (1 - 0.1));
        return Color.rgb(red, green, blue);
    }
}
